home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-03-08 | 71.7 KB | 2,679 lines |
- INDEX 153 100 C Library Reference
- 10309 14 _EXIT
- 23419 74 _GETARGS
- 25 24 ACOS
- 728 20 ASCTIME
- 25 24 ASIN
- 1183 24 ASSERT
- 25 24 ATAN
- 25 24 ATAN2
- 2108 17 ATOF
- 2108 17 ATOI
- 2108 17 ATOL
- 2539 26 BDOS
- 3318 21 BIOS
- 3980 16 CALLOC
- 10999 13 CEIL
- 4385 19 CGETS
- 4863 20 CHDIR
- 5303 23 CHMOD
- 6040 16 CLOSE
- 6394 18 CLREOF
- 6394 18 CLRERR
- 6904 13 COS
- 7097 11 COSH
- 4385 19 CPUTS
- 7305 23 CREAT
- 8152 27 CTIME
- 8645 8 DI
- 8780 16 DUP
- 8645 8 EI
- 9171 20 EXECL
- 9171 20 EXECV
- 9794 15 EXIT
- 10592 15 EXP
- 10999 13 FABS
- 11319 15 FCLOSE
- 11643 18 FEOF
- 11643 18 FERROR
- 12068 16 FFLUSH
- 12442 20 FGETC
- 12978 15 FGETS
- 13521 14 FILENO
- 10999 13 FLOOR
- 13853 89 FOPEN
- 17368 19 FPRINTF
- 17936 17 FPUTC
- 18404 14 FPUTS
- 18683 23 FREAD
- 19305 14 FREE
- 19561 17 FREOPEN
- 20007 18 FREXP
- 20656 18 FSCANF
- 21190 46 FSEEK
- 22578 16 FTELL
- 22942 18 FWRITE
- 26292 12 GETC
- 26627 21 GETCH
- 27235 17 GETCHAR
- 26627 21 GETCHE
- 27678 18 GETCWD
- 28141 33 GETENV
- 29479 15 GETS
- 29797 16 GETUID
- 30151 20 GETW
- 30791 22 GMTIME
- 31573 11 INP
- 31896 30 INT86
- 31896 30 INT86X
- 31896 30 INTDOS
- 31896 30 INTDOSX
- 33193 42 ISALNUM
- 33193 42 ISALPHA
- 33193 42 ISASCII
- 34292 13 ISATTY
- 33193 42 ISCNTRL
- 33193 42 ISDIGIT
- 33193 42 ISLOWER
- 33193 42 ISPUNCT
- 33193 42 ISSPACE
- 33193 42 ISUPPER
- 34686 15 KBHIT
- 20007 18 LDEXP
- 30791 22 LOCALTIME
- 10592 15 LOG
- 10592 15 LOG10
- 34973 52 LONGJMP
- 36522 18 LSEEK
- 37027 19 MALLOC
- 37617 25 MEMCMP
- 37617 25 MEMCPY
- 37617 25 MEMSET
- 38570 18 MKDIR
- 39003 29 MSDOS
- 39003 29 MSDOSCX
- 39984 100 OPEN
- 31573 11 OUTP
- 10592 15 POW
- 43092 92 PRINTF
- 46633 14 PUTC
- 26627 21 PUTCH
- 46911 14 PUTCHAR
- 47125 15 PUTS
- 47417 16 PUTW
- 47765 38 QSORT
- 48915 15 RAND
- 49182 20 READ
- 49819 20 REALLOC
- 50476 15 REMOVE
- 50753 15 RENAME
- 51083 17 REWIND
- 38570 18 RMDIR
- 51532 16 SBRK
- 52010 79 SCANF
- 55180 13 SEGREAD
- 57382 21 SET_VECTOR
- 55885 36 SETBUF
- 55439 13 SETJMP
- 55667 14 SETUID
- 55885 36 SETVBUF
- 58096 26 SIGNAL
- 59184 13 SIN
- 7097 11 SINH
- 59393 21 SPAWNL
- 59393 21 SPAWNV
- 59393 21 SPAWNVE
- 60155 19 SPRINTF
- 60759 14 SQRT
- 61335 18 SRAND
- 60952 16 SSCANF
- 61815 48 STAT
- 63764 29 STRCAT
- 65148 18 STRCHR
- 63764 29 STRCMP
- 63764 29 STRCPY
- 63764 29 STRLEN
- 63764 29 STRNCAT
- 63764 29 STRNCMP
- 63764 29 STRNCPY
- 65148 18 STRRCHR
- 65690 24 SYSTEM
- 66372 13 TAN
- 7097 11 TANH
- 66535 19 TIME
- 67121 19 TOASCII
- 67121 19 TOLOWER
- 67121 19 TOUPPER
- 67635 22 UNGETC
- 26627 21 UNGETCH
- 68117 15 UNLINK
- 68526 47 VA_ARG
- 68526 47 VA_END
- 68526 47 VA_START
- 43092 92 VPRINTF
- 70551 61 WRITE
- %ACOS
- %ASIN
- %ATAN
- %ATAN2
-
- SYNOPSIS
- #include <math.h>
-
- double acos(double f)
- double asin(double f)
- double atan(double f)
-
- double atan2(double x, double y)
-
- DESCRIPTION
-
- These functions are the converse of the trignometric func-
- tions cos, sin and tan. Acos and asin are undefined for ar-
- guments whose absolute value is greater than 1.0. The re-
- turned value is in radians, and always in the range -pi/2 to
- +pi/2, except for ■#cos(), which returns a value in the range
- 0 to pi. ■%Atan2() returns the inverse tan of x/y but uses
- the signs of its arguments to return a value in the range
- -pi to +pi.
-
- SEE ALSO
- sin, cos, tan
-
- %ASCTIME
-
- SYNOPSIS
- #include <time.h>
-
- char * asctime(time_t t)
-
- DESCRIPTION
-
- ■'Asctime() takes the broken down time pointed to by its argu-
- ment, and returns a 26 character string describing the
- current date and time in the format
-
- Sun Sep 16 01:03:52 1973\n\0
-
- Note the newline at the end of the string. The width of each
- field in the string is fixed.
-
- SEE ALSO
- ctime, time, gmtime, localtime
-
- %ASSERT
-
- SYNOPSIS
- #include <assert.h>
-
- void assert(int e)
-
- DESCRIPTION
-
- This macro is used for debugging purposes; the basic method
- of usage is to place assertions liberally throughout your
- code at points where correct operation of the code depends
- upon certain conditions being true initially. An ■&assert()
- may be used to ensure at run time that that assumption
- holds. For example, the following statement asserts that the
- pointer tp is non-null:
-
- assert(tp);
-
- If at run time the expression evaluates to false, the pro-
- gram will abort with a message identifying the source file
- and line number of the assertion, and the expression used as
- an argument to it. A fuller discussion of the uses of assert
- is impossible in limited space, but it is closely linked to
- methods of proving program correctness.
- %ATOF
- %ATOI
- %ATOL
-
- SYNOPSIS
- #include <math.h>
-
- double atof(char * s)
- int atoi(char * s)
-
- #include <stdlib.h>
-
- long atol(char * s)
-
- DESCRIPTION
-
- These routines convert a decimal number in the argument
- string s into a double float, integer or long integer
- respectively. Leading blanks are skipped over. In the case
- of ■$atof(), the number may be in scientific notation.
- %BDOS
-
- SYNOPSIS
- #include <cpm.h>
-
- char bdos(int func, int arg)
-
- short bdoshl(int func, int arg)(CP/M-80 only)
-
- DESCRIPTION
-
- ■$Bdos() calls the CP/M BDOS with func in register C (CL for
- CP/M-86) and arg in register DE (DX). The return value is
- the byte returned by the BDOS in register A (AX). ■&Bdoshl()
- is the same, except that the return value is the value re-
- turned by the BDOS in HL. Constant values for the various
- BDOS function values are defined in cpm.h.
-
-
- These functions should be avoided except in programs which are
- not intended to be used on an operating system other than
- CP/M. The standard I/O routines are to be preferred, since
- they are portable.
-
- SEE ALSO
- bios, msdos
-
- %BIOS
-
- SYNOPSIS
- #includ <cpm.h>
-
- char bios(int n, int a1, int a2)
-
- DESCRIPTION
-
- This function will call the n'th bios entry point (cold boot
- = 0, warm boot = 1, etc.) with register BC (CX) set to the
- argument a1 and DE (DX) set to the argument a2. The return
- value is the contents of register A (AX) after the bios
- call. On CP/M-86, bdos function 50 is used to perform the
- bios call. This function should not be used unless unavoid-
- able, since it is highly non-portable. There is even no
- guarantee of portability of bios calls between differing
- CP/M systems.
-
- SEE ALSO
- bdos
-
- %CALLOC
-
- SYNOPSIS
- #include <stdlib.h>
-
- char * calloc(size_t cnt, size_t size)
-
- DESCRIPTION
-
- ■&Calloc() attempts to obtain a contiguous block of dynamic
- memory which will hold cnt objects, each of length size. The
- block is filled with zeroes. A pointer to the block is re-
- turned, or 0 if the memory could not be allocated.
-
- SEE ALSO
- brk, sbrk, malloc, free
-
- %CGETS
- %CPUTS
-
- SYNOPSIS
- #include <conio.h>
-
- char * cgets(char * s)
-
- void cputs(char * s)
-
- DESCRIPTION
-
- ■%Cputs() will read one line of input from the console into
- the buffer passed as an argument. It does so by repeated
- calls to ■&getche(). ■%Cputs() writes its argument string to
- the console, outputting carriage returns before each newline
- in the string. It calls ■%putch() repeatedly.
-
- SEE ALSO
- getch, getche, putch
-
- %CHDIR
-
- SYNOPSIS
- #include <sys.h>
-
- int chdir(char * s)
-
- DESCRIPTION
-
- This function is availble only under MS-DOS. It changes the
- current working directory to the path name supplied as argu-
- ment. This path name be be absolute, as in A:\FRED, or rela-
- tive, as in ..\SOURCES. A return value of -1 indicates that
- the requested change could not be performed.
-
-
-
-
- SEE ALSO
- mkdir, rmdir, getcwd
-
- %CHMOD
-
- SYNOPSIS
- #include <stat.h>
-
- int chmod(char * name, int )
- char * name;
- int mode;
-
- DESCRIPTION
-
- This function changes the file attributes (or modes) of the
- named file. The argument name may be any valid file name.
- The mode argument may include all bits defined in ■$stat.■!h ex-
- cept those relating to the type of the file, e.g. S_IFDIR.
- Note however that not all bits may be changed under all
- operating systems, e.g. neither DOS nor CP/M permit a file
- to be made unreadable, thus even if mode does not include
- S_IREAD the file will still be readable (and ■$stat() will
- still return S_IREAD in flags).
-
- SEE ALSO
- stat, creat
-
- %CLOSE
-
- SYNOPSIS
- #include <unixio.h>
-
- int close(int fd)
-
- DESCRIPTION
-
- This routine closes the file associated with the file
- descriptor fd, which will have been previously obtained from
- a call to ■$open(). ■%Close() returns 0 for a successful close,
- or -1 otherwise.
-
- SEE ALSO
- open, read, write, seek
-
- %CLRERR
- %CLREOF
-
- SYNOPSIS
- #include <stdio.h>
- void clrerr(FILE * stream)
- void clreof(FILE * stream)
-
- DESCRIPTION
-
- These are macros, defined in stdio.h, which reset the error
- and end of file flags respectively for the specified stream.
- They should be used with care; the major valid use is for
- clearing an EOF status on input from a terminal-like device,
- where it may be valid to continue to read after having seen
- an end-of-file indication.
-
- SEE ALSO
- fopen, fclose
-
- %COS
-
- SYNOPSIS
- #include <math.h>
-
- double cos(double f)
-
- DESCRIPTION
-
- This function yields the cosine of its argument.
-
- SEE ALSO
- sin, tan, asin, acos, atan
-
- %COSH
- %SINH
- %TANH
-
- SYNOPSIS
- #include <math.h>
-
- double cosh(double f)
- double sinh(double f)
- double tanh(double f)
-
- DESCRIPTION
-
- These functions implement the hyperbolic trig functions.
- %CREAT
-
- SYNOPSIS
- #include <stat.h>
-
- int creat(char * name, int mode)
-
- DESCRIPTION
-
- This routine attempts to create the file named by name. If
- the file exists and is writeable, it will be removed and
- re-created. The return value is -1 if the create failed, or
- a small non-negative number if it succeeded. This number is
- a valuable token which must be used to write to or close the
- file subsequently. Mode is used to initialize the attri-
- butes of the created file. The allowable bits are the same
- as for ■%chmod(), but for Unix compatibility it is recommended
- that a mode of 0666 or 0600 be used. Under CP/M the mode is
- ignored - the only way to set a files attributes is via the
- ■%chmod() function.
-
- SEE ALSO
- open, close, read, write, seek, stat, chmod
-
- %CTIME
-
- SYNOPSIS
- #include <time.h>
-
- char * ctime(time_t t)
-
- DESCRIPTION
-
- ■%Ctime() converts the time in seconds pointed to by its argu-
- ment to a string of the same form as described for asctime.
- Thus the following program prints the current time and date:
-
-
- #include <time.h>
-
- main()
- {
- time_t t;
-
- time(&t);
- printf(■"%s■-, ctime(&t));
- }
-
-
- SEE ALSO
- gmtime, localtime, asctime, time
-
- %DI
- %EI
-
- SYNOPSIS
- void ei(void);
- void di(void);
-
- DESCRIPTION
-
- ■"Ei() and ■"di() enable and disable interrupts respectivly.
- %DUP
-
- SYNOPSIS
- #include <unixio.h>
-
- int dup(int fd)
-
- DESCRIPTION
-
- Given a file descriptor, such as returned by ■$open(), this
- routine will return another file descriptor which will refer
- to the same open file. -1 is returned if the fd argument is
- a bad descriptor or does not refer to an open file.
-
- SEE ALSO
- open, close, creat, read, write
-
- %EXECL
- %EXECV
-
- SYNOPSIS
- #include <sys.h>
-
- int execl(char * name, pname, ...)
- int execv(char * name, ppname)
-
- DESCRIPTION
-
- ■%Execl() and ■%execv() load and execute the program specified
- by the string name. ■%Execl() takes the arguments for the pro-
- gram from the zero-terminated list of string arguments. ■#Ex-
- ■#ecv() is passed a pointer to an array of strings. The array
- must be zero-terminated. If the named program is found and
- can be read, the call does not return. Thus any return from
- these routines may be treated as an error.
-
- SEE ALSO
- spawnl, spawnv, system
-
- %EXIT
-
- SYNOPSIS
- #include <stdlib.h>
-
- void exit(int status)
-
- DESCRIPTION
-
- This call will close all open files and exit from the pro-
- gram. On CP/M, this means a return to CCP level. Status will
- be stored in a known place for examination by other pro-
- grams. This is only useful if the program executing was ac-
- tually invoked by another program which is trapping warm
- boots. The status value will be stored on CP/M at 80H. This
- call will never return.
- %_EXIT
-
- SYNOPSIS
- #include <stdlib.h>
- void _exit(int status)
-
- DESCRIPTION
-
- This function will cause an immediate exit from the program,
- without the normal flushing of stdio buffers that is per-
- formed by ■$exit().
-
- SEE ALSO
- exit
-
- %EXP
- %LOG
- %LOG10
- %POW
-
- SYNOPSIS
- #include <math.h>
-
- double exp(double f)
- double log(double f)
- double log10(double f)
- double pow(double x, y)
-
- DESCRIPTION
-
- ■#Exp() returns the exponential function of its argument,
- ■#log() the natural logarithm of f, and ■%log10() the logarithm
- to base 10. ■#Pow() returns the value of x raised to the y'th
- power.
- %FABS
- %CEIL
- %FLOOR
-
- SYNOPSIS
- #include <math.h>
-
- double fabs(double f)
- double ceil(double f)
- double floor(double f)
-
- DESCRIPTION
-
- These routines return respectively the absolute value of f,
- the smallest integral value not less than f, and the largest
- integral value not greater than f.
- %FCLOSE
-
- SYNOPSIS
- #include <stdio.h>
-
- int fclose(FILE * stream)
-
- DESCRIPTION
-
- This routine closes the specified i/o stream. Stream should
- be a token returned by a previous call to ■%fopen(). NULL is
- returned on a successful close, EOF otherwise.
-
- SEE ALSO
- fopen, fread, fwrite
-
- %FEOF
- %FERROR
-
- SYNOPSIS
- #include <stdio.h>
-
- feof(FILE * stream)
- ferror(FILE * stream)
-
- DESCRIPTION
-
- These macros test the status of the EOF and ERROR bits
- respectively for the specified stream. Each will be true if
- the corresponding flag is set. The macros are defined in
- stdio.h. Stream must be a token returned by a previous
- ■%fopen() call.
-
- SEE ALSO
- fopen, fclose
-
- %FFLUSH
-
- SYNOPSIS
- #include <stdio.h>
-
- int fflush(FILE * stream)
-
- DESCRIPTION
-
- ■&Fflush() will output to the disk file or other device
- currently open on the specified stream the contents of the
- associated buffer. This is typically used for flushing buf-
- fered standard output in interactive applications.
-
- SEE ALSO
- fopen, fclose
-
- %FGETC
-
- SYNOPSIS
- #include <stdio.h>
-
- int fgetc(FILE * stream)
-
- DESCRIPTION
-
- ■%Fgetc() returns the next character from the input stream.
- If end-of-file is encountered EOF will be returned instead.
- It is for this reason that the function is declared as int.
- The integer EOF is not a valid byte, thus end-of-file is
- distinguishable from reading a byte of all 1 bits from the
- file. ■%Fgetc() is the non-macro version of ■$getc().
-
-
-
- SEE ALSO
- fopen, fclose, fputc, getc, putc
-
- %FGETS
-
- SYNOPSIS
- #include <stdio.h>
-
- char * fgets(char * s, size_t n, char * stream)
-
- DESCRIPTION
-
- ■%Fgets() places in the buffer s up to n-1 characters from the
- input stream. If a newline is seen in the input before the
- correct number of characters is read, then ■%fgets() will re-
- turn immediately. The newline will be left in the buffer.
- The buffer will be null terminated in any case. A success-
- ful ■%fgets() will return its first argument; NULL is returned
- on end-of-file or error.
- %FILENO
-
- SYNOPSIS
- fileno(FILE * stream)
-
- DESCRIPTION
-
- ■&Fileno() is a macro from stdio.h which yields the file
- descriptor associated with stream. It is mainly used when it
- is desired to perform some low-level operation on a file
- opened as a stdio stream.
-
- SEE ALSO
- fopen, fclose, open, close
-
- %FOPEN
-
- SYNOPSIS
- #include <stdio.h>
-
- FILE * fopen(char * name, char * mode);
-
- DESCRIPTION
-
-
- DESCRIPTION
-
- ■%Fopen() attempts to open file for reading or writing (or
- both) according to the mode string supplied. The mode
- string is interpreted as follows:
- r
-
- The file is opend for reading if it exists. If the file does
- not exist the call fails.
- r+
-
- If the file exists it is opened for reading and writing. If
- the file does not already exist the call fails.
- w
-
- The file is created if it does not exist, or truncated if it
- does. It is then opened for writing.
- w+
-
- The file is created if it does not already exist, or trun-
- cated if it does. The file is opened for reading and writ-
- ing.
- a
-
- The file is created if it does not already exist, and opened
- for writing. All writes will be dynamically forced to the
- end of file, thus this mode is known as ■&append mode.
- a+
-
- The file is created if it does not already exist, and opened
- for reading and writing. All writes to the file will be
- dynamically forced to the end of the file, i.e. while any
- portion of the file may be read, all writes will take place
- at the end of the file and will not overwrite any existing
- data. Calling ■%fseek() in an attempt to write at any other
- place in the file will not be effective. The ■!b■* modifier
- may be appended to any of the above modes, e.g. ■#r+b■# or
- ■#rb+■< are equivalent. Adding the ■!b■8 modifier will cause the
- file to be opened in binary rather than ASCII mode. Opening
- in ASCII mode ensures that text files are read in a manner
- compatible with the Unix-derived conventions for C programs,
- i.e. that text files contain lines delimited by newline
- characters. The special treatment of read or written char-
- acters varies with the operating system, but includes some
- or all of the following:
- NEWLINE (LINE FEED)
-
- Converted to carriage return, line feed on output.
- RETURN
-
- Ignored on input, inserted before NEWLINE on output.
- CTRL-Z
-
- Signals EOF on input, appended on fclose on output if neces-
- sary on CP/M.
-
-
- Opening a file in binary mode will allow each character to be
- read just as written, but because the exact size of a file
- is not known to CP/M, the file may contain more bytes than
- were written to it. See ■$open() for a description of what
- constitutes a file name. When using one of the read/write
- modes (with a '+' character in the string), although they
- permits reading and writing on the same stream, it is not
- possible to arbitrarily mix input and output calls to the
- same stream. At any given time a stream opened with a ■!+
- mode will be in either an input or output state. The state
- may only be changed when the associated buffer is empty,
- which is only guaranteed immediately after a call to
- ■&fflush() or one of the file positioning functions ■%fseek() or
- ■&rewind(). The buffer will also be empty after encountering
- EOF while reading a binary stream, but it is recommended
- that an explicit call to ■&fflush() be used to ensure this si-
- tuation. Thus after reading from a stream you should call
- ■&fflush() or ■%fseek() before attempting to write on that
- stream, and vice versa.
-
- SEE ALSO
- fclose, fgetc, fputc, freopen
-
- %FPRINTF
-
- SYNOPSIS
- #include <stdio.h>
-
- fprintf(FILE * stream, char * fmt, ...);
- vfprintf(FILE * stream, va_list va_arg);
-
- DESCRIPTION
-
- ■'Fprintf() performs formatted printing on the specified
- stream. Refer to ■&printf() for the details of the available
- formats. ■(Vfprintf() is similar to ■'fprintf() but takes a
- variable argument list pointer rather than a list of argu-
- ments. See the description of ■"va_■%start() for more informa-
- tion on variable argument lists.
-
- SEE ALSO
- printf, fscanf, sscanf
-
- %FPUTC
-
- SYNOPSIS
- #include <stdio.h>
-
- int fputc(int c, FILE * stream)
-
- DESCRIPTION
-
- The character c is written to the supplied stream. This is
- the non-macro version of ■$putc(). The character is returned
- if it was successfully written, EOF is returned otherwise.
- Note that ■5written to the stream■: may mean only placing the
- character in the buffer associated with the stream.
-
- SEE ALSO
- putc, fgetc, fopen, fflush
-
- %FPUTS
-
- SYNOPSIS
- #include <stdio.h>
-
- int fputs(char * s, FILE * stream)
-
- DESCRIPTION
-
- The null-terminated string s is written to the stream. No
- newline is appended (cf. ■$puts() ). The error return is EOF.
-
- SEE ALSO
- puts, fgets, fopen, fclose
-
- %FREAD
-
- SYNOPSIS
- #include <stdio.h>
-
- int fread(void * buf, size_t size, size_t cnt,
- FILE * stream)
-
- DESCRIPTION
-
- Up to cnt objects, each of length size, are read into memory
- at buf from the stream. The return value is the number of
- objects read. If none is read, 0 will be returned. Note
- that a return value less than cnt, but greater than 0, may
- not represent an error (cf. ■&fwrite() ). No word alignment
- in the stream is assumed or necessary. The read is done via
- successive ■$getc()'s.
-
-
-
-
- SEE ALSO
- fwrite, fopen, fclose, getc
-
- %FREE
-
- SYNOPSIS
- #include <stdlib.h>
-
- void free(void * ptr)
-
- DESCRIPTION
-
- ■$Free() deallocates the block of memory at ptr, which must
- have been obtained from a call to ■&malloc() or ■&calloc().
-
- SEE ALSO
- malloc, calloc
-
- %FREOPEN
-
- SYNOPSIS
- #include <stdio.h>
-
- FILE * freopen(char * name, char * mode, FILE * stream)
-
- DESCRIPTION
-
- ■'Freopen() closes the given stream (if open) then re-opens
- the stream attached to the file described by name. The mode
- of opening is given by mode. It either returns the stream
- argument, if successful, or NULL if not. See ■%fopen() for
- more information.
-
- SEE ALSO
- fopen, fclose
-
- %FREXP
- %LDEXP
-
- SYNOPSIS
- #include <math.h>
-
- double frexp(double f, int * p)
-
- double ldexp(double f, int i)
-
- DESCRIPTION
-
- ■%Frexp() breaks a floating point number into a normalized
- fraction and an integral power of 2. The integer is stored
- into the int object pointed to by p. Its return value x is
- in the interval [0.5, 1.0) or zero, and f equals x times 2
- raised to the power stored in *p. If f is zero, both parts
- of the result are zero. ■%Ldexp() performs the reverse opera-
- tion; the integer i is added to the exponent of the floating
- point f and the resultant value returned.
- %FSCANF
-
- SYNOPSIS
- #include <stdio.h>
-
- int fscanf(FILE * stream, char * fmt, ...)
-
- DESCRIPTION
-
- This routine performs formatted input from the specified
- stream. See ■%scanf() for a full description of the behaviour
- of the routine. ■'Vfscanf() is similar to ■&fscanf() but takes
- a variable argument list pointer rather than a list of argu-
- ments. See the description of ■"va_■%start() for more informa-
- tion on variable argument lists.
-
- SEE ALSO
- scanf, sscanf, fopen, fclose
-
- %FSEEK
-
- SYNOPSIS
- #include <stdio.h>
-
- int fseek(FILE * stream, long offs, int wh)
-
- DESCRIPTION
-
- ■%Fseek() positions the ■,file pointer■8 (i.e. a pointer to the
- next character to be read or written) of the specified
- stream as follows:
- _____________________________
- wh resultant location
- _____________________________
- 0 offs
- 1 offs+previous location
- 2 offs+length of file
- _____________________________
- |||||
-
-
-
- |||||
-
-
-
- |||||
-
-
-
-
-
-
- It should be noted that offs is a signed value. Thus the 3 al-
- lowed modes give postioning relative to the beginning of the
- file, the current file pointer and the end of the file
- respectively. EOF is returned if the positioning request
- could not be satisfied. Note however that positioning beyond
- the end of the file is legal, but will result in an EOF in-
- dication if an attempt is made to read data there. It is
- quite in order to write data beyond the previous end of
- file. ■%Fseek() correctly accounts for any buffered data.
-
- SEE ALSO
- lseek, fopen, fclose
-
- %FTELL
-
- SYNOPSIS
- #include <stdio.h>
-
- long ftell(FILE * stream)
-
- DESCRIPTION
-
- This function returns the current position of the conceptual
- read/write pointer associated with stream. This is the po-
- sition relative to the beginning of the file of the next
- byte to be read from or written to the file.
-
- SEE ALSO
- fseek
-
- %FWRITE
-
- SYNOPSIS
- #include <stdio.h>
-
- int fwrite(void * buf, size_t size, size_t cnt,
- FILE * stream)
-
- DESCRIPTION
-
- Cnt objects of length size bytes will be written from memory
- at buf, to the specified stream. The number of whole objects
- written will be returned, or 0 if none could be written. Any
- return value not equal to cnt should be treated as an error
- (cf. ■%fread() ).
-
- SEE ALSO
- fread, fopen, fclose
-
- %_GETARGS
-
- SYNOPSIS
- #include <sys.h>
-
- char ** _getargs(char * buf, char * name)
- extern int _argc_;
-
- DESCRIPTION
-
- This routine performs I/O redirection (CP/M only) and wild
- card expansion. Under MS-DOS I/O redirection is performed by
- the operating system. It is called from startup code to
- operate on the command line if the -R option is used to the
- C command, but may also be called by user-written code. If
- the buf argument is null, it will read lines of text from
- standard input. If the standard input is a terminal (usually
- the console) the name argument will be written to the stan-
- dard error stream as a prompt. If the buf argument is not
- null, it will be used as the source of the string to be pro-
- cessed. The returned value is a pointer to an array of
- strings, exactly as would be pointed to by the argv argument
- to the main() function. The number of strings in the array
- may be obtained from the global _argc_. For example, a typi-
- cal use of this function would be:
-
- #include <sys.h>
-
- main(argc, argv)
- char ** argv;
- {
- extern char ** _getargs();
- extern int _argc_;
-
- if(argc == 1) { /* no arguments */
- argv = _getargs(0, ■&myname■");
- argc = _argc_;
- }
- .
- .
- .
- }
-
- There will be one string in the array for each word in the
- buffer processed. Quotes, either single (') or double (■!)
- may be used to include white space in ■%words■/. If any wild
- card characters (? or *) appear in a non-quoted word, it
- will be expanded into a string of words, one for each file
- matching the word. The usual CP/M conventions are followed
- for this expansion. On CP/M any occurence of the redirection
- characters > and < outside quotes will be handled in the
- following manner:
- > name
-
- will cause standard output to be redirected to the file
- name.
- < name
-
- will cause standard input to be redirected from the file
- name.
- >> name
-
- will cause standard output to append to file name.
-
-
- White space is optional between the > or < character and the file
- name, however it is an error for a redirection character not
- to be followed by a file name. It is also an error if a
- file cannot be opened for input or created for output. An
- append redirection (>>) will create the file if it does not
- exist. If the source of text to be processed is standard
- input, several lines may be supplied by ending each line
- (except the last) with a backslash (\). This serves as a
- continuation character. Note that the newline following the
- backslash is ignored, and not treated as white space.
- %GETC
-
- SYNOPSIS
- #include <stdio.h>
-
- int getc(FILE * stream)
- FILE * stream;
-
- DESCRIPTION
-
- One character is read from the specified stream and re-
- turned. EOF will be returned on end-of-file or error. This
- is the macro version of ■%fgetc(), and is defined in stdio.h.
- %GETCH
- %GETCHE
- %UNGETCH
- %PUTCH
-
- SYNOPSIS
- #include <conio.h>
-
- char getch(void)
- char getche(void)
- void putch(int c)
-
- DESCRIPTION
-
- ■%Getch() reads a single character from the console keyboard
- and returns it without echoing. ■&Getche() is similar but
- does echo the character typed. ■'Ungetch() will push back one
- character such that the next call to ■%getch() or ■&getche()
- will return that character. ■%Putch() outputs the character c
- to the console screen, prepending a carriage return if the
- character is a newline.
-
- SEE ALSO
- cgets, cputs
-
- %GETCHAR
-
- SYNOPSIS
- #include <stdio.h>
-
- int getchar(void)
-
- DESCRIPTION
-
- ■'Getchar() is a ■$getc(■%stdin) operation. It is a macro defined
- in stdio.h. Note that under normal circumstances getchar()
- will NOT return unless a carriage return has been typed on
- the console. To get a single character immediately from the
- console, use the routine ■%getch().
-
- SEE ALSO
- getc, fgetc, freopen, fclose
-
- %GETCWD
-
- SYNOPSIS
- #include <sys.h>
-
- char * getcwd(int drive)
-
- DESCRIPTION
-
- ■&Getcwd() returns the path name of the current working direc-
- tory on the specified drive, where drive == 0 represents the
- current drive, drive == 1 represents A:, drive == 2
- represents B: etc. The return value is a pointer to a stat-
- ic area of memory which will be overwritten on the next call
- to ■&getcwd().
-
- SEE ALSO
- chdir
-
- %GETENV
-
- SYNOPSIS
- #include <stdlib.h>
-
- char * getenv(char * s)
- extern char ** environ;
-
- DESCRIPTION
-
- ■&Getenv() will search the vector of environment strings for
- one matching the argument supplied, and return the value
- part of that environment string. For example, if the en-
- vironment contains the string
-
- COMSPEC=A:\COMMAND.COM
-
- then ■&getenv(■5_C_O_M_S_P_E_C■G) will return A:\COMMAND.COM. The glo-
- bal variable environ is a pointer to an array of pointers to
- environment strings, terminated by a null pointer. This ar-
- ray is initialized at startup time under MS-DOS from the en-
- vironment pointer supplied when the program was executed.
- Under CP/M no such environment is supplied, so the first
- call to ■&getenv() will attempt to open a file in the current
- user number on the current drive called ENVIRON. This file
- should contain definitions for any environment variables
- desired to be accessible to the program, e.g.
-
- HITECH=0:C:
-
- Each variable definition should be on a separate line, con-
- sisting of the variable name (conventionally all in upper
- case) followed without intervening white space by an equal
- sign ('=') then the value to be assigned to that variable.
- %GETS
-
- SYNOPSIS
- #include <stdio.h>
-
- char * gets(char * s)
-
- DESCRIPTION
-
- ■$Gets() reads a line from standard input into the buffer at
- s, deleting the newline (cf. ■%fgets() ). The buffer is null
- terminated. It returns its argument, or NULL on end-of-file.
-
- SEE ALSO
- fgets, freopen
-
- %GETUID
-
- SYNOPSIS
- #include <sys.h>
-
- int getuid(void)
-
- DESCRIPTION
-
- ■&Getuid() returns the current user number. On CP/M, the
- current user number determines the user number associated
- with an opened or created file, unless overridden by an ex-
- plicit user number prefix in the file name.
-
- SEE ALSO
- setuid, open
-
- %GETW
-
- SYNOPSIS
- #include <stdio.h>
-
- int getw(FILE * stream)
-
- DESCRIPTION
-
- ■$Getw() returns one word (16 bits for the Z80 and 8086) from
- the nominated stream. EOF is returned on end-of-file, but
- since this is a perfectly good word, the ■$feof() macro should
- be used for testing for end-of-file. When reading the word,
- no special alignment in the file is necessary, as the read
- is done by two consecutive ■$getc()'s. The byte ordering is
- however undefined. The word read should in general have been
- written by ■$putw().
-
- SEE ALSO
- putw, getc, fopen, fclose
-
- %GMTIME
- %LOCALTIME
-
- SYNOPSIS
- #include <time.h>
-
- struct tm * gmtime(time_t * t)
- struct tm * localtime(time_t * t)
-
- DESCRIPTION
-
- These functions convert the time pointed to by t which is in
- seconds since 00:00:00 on Jan 1, 1970, into a broken down
- time stored in a structure as defined in ■$time.■!h. ■&Gmtime()
- performs a straight conversion, while ■)localtime() takes into
- account the contents of the global integer time_zone. This
- should contain the number of minutes that the local time
- zone is WESTWARD of Greenwich. Since there is no way under
- MS-DOS of actually pre-determining this value, by default
- ■)localtime() will return the same result as ■&gmtime().
-
- SEE ALSO
- ctime, asctime, time
-
- %INP
- %OUTP
-
- SYNOPSIS
- char inp(unsigned port)
-
- void outp(unsigned, unsigned data)
-
- DESCRIPTION
-
- These routines read and write bytes to and from I/O ports.
- ■#Inp() returns the data byte read from the specified port,
- and ■$outp() outputs the data byte to the specified port.
- %INT86
- %INT86X
- %INTDOS
- %INTDOSX
-
- SYNOPSIS
- #include <dos.h>
-
- int int86(int intno, union REGS * inregs,
- union REGS * outregs)
- int int86x(int intno, union REGS inregs,
- union REGS outregs, struct SREGS * segregs)
- int intdos(union REGS * inregs, union REGS * outregs)
- int intdosx(union REGS * inregs, union REGS * outregs,
- struct SREGS * segregs)
-
- DESCRIPTION
-
- These functions allow calling of software interrupts from C
- programs. ■%Int86() and ■&int86x() execute the software inter-
- rupt specified by ■%intno while ■&intdos() and ■'intdosx() execute
- interrupt 21(hex), which is the MS-DOS system call inter-
- rupt. The inregs pointer should point to a union containing
- values for each of the general purpose registers to be set
- when executing the interrupt, and the values of the regis-
- ters on return are copied into the union pointed to by
- outregs. The ■!x versions of the calls also take a pointer to
- a union defining the segment register values to be set on
- execution of the interrupt, though only ES and DS are actu-
- ally set from this structure.
-
- SEE ALSO
- segread
-
- %ISALNUM
- %ISALPHA
- %ISDIGIT
- %ISLOWER
- %ISASCII
- %ISCNTRL
- %ISSPACE
- %ISUPPER
- %ISPUNCT
-
- SYNOPSIS
- #include <ctype.h>
-
- isalnum(char c)
- isalpha(char c)
- isascii(char c)
- iscntrl(char c)
- isdigit(char c)
- islower(char c)
- isprint(char c)
- isgraph(char c)
- ispunct(char c)
- isspace(char c)
- isupper(char c)
- isxdigit(char c)
- char c;
-
- DESCRIPTION
-
- These macros, defined in ctype.h, test the supplied charac-
- ter for membership in one of several overlapping groups of
- characters. Note that all except isascii are defined for ■!c
- iff ■'isascii(■!c) is true.
-
- isalnum(c) c is alphanumeric
- isalpha(c) c is in A-Z or a-z
- isascii(c) c is a 7 bit ascii character
- iscntrl(c) c is a control character
- isdigit(c) c is a decimal digit
- islower(c) c is in a-z
- isprint(c) c is a printing char
- isgraph(c) c is a non-space printable character
- ispunct(c) c is not alphanumeric
- isspace(c) c is a space, tab or newline
- isupper(c) c is in A-Z
- isxdigit(c) c is in 0-9 or a-f or A-F
-
-
- SEE ALSO
- toupper, tolower, toascii
-
- %ISATTY
-
- SYNOPSIS
- #include <unixio.h>
-
- int isatty(int fd)
-
- DESCRIPTION
-
- This tests the type of the file associated with fd. It re-
- turns true if the file is attached to a tty-like device.
- This would normally be used for testing if standard input is
- coming from a file or the console. For testing STDIO
- streams, use ■&isatty(■&fileno(■&stream)).
- %KBHIT
-
- SYNOPSIS
- #include <conio.h>
-
- int kbhit(void)
-
- DESCRIPTION
-
- This function returns 1 if a character has been pressed on
- the console keyboard, 0 otherwise. Normally the character
- would then be read via ■%getch().
-
- SEE ALSO
- getch, getche
-
- %LONGJMP
-
- SYNOPSIS
- #include <setjmp.h>
-
- void longjmp(jmp_buf buf, int val)
-
- DESCRIPTION
-
- ■'Longjmp(), in conjunction with ■&setjmp(), provides a mechan-
- ism for non-local gotos. To use this facility, ■&setjmp()
- should be called with a jmp_buf argument in some outer level
- function. The call from ■&setjmp() will return 0. To return to
- this level of execution, ■&lonjmp() may be called with the
- same jmp_buf argument from an inner level of execution. Note
- however that the function which called ■&setjmp() must still
- be active when ■'longjmp() is called. Breach of this rule will
- cause disaster, due to the use of a stack containing invalid
- data. The val argument to ■'longjmp() will be the value ap-
- parently returned from the ■&setjmp(). This should normally be
- non-zero, to distinguish it from the genuine ■&setjmp() call.
- For example:
-
- #include <setjmp.h>
-
- static jmp_buf jb_err;
-
- main()
- {
- if(setjmp(jb_err)) {
- printf(■2An error occured\n■");
- exit(1);
- }
- a_func();
- }
-
- a_func()
- {
- if(do_whatever() != 0)
- longjmp(jb_err, 1);
- if(do_something_else() != 0)
- longjmp(jb_err, 2);
- }
-
-
-
- The calls to ■'longjmp() above will never return; rather the call
- to ■&setjmp() will appear to return, but with a return value
- equal to the argument supplied to ■'longjmp().
-
- SEE ALSO
- setjmp
-
- %LSEEK
-
- SYNOPSIS
- #include <unixio.h>
-
- long lseek(int fd, long offs, int wh)
-
- DESCRIPTION
-
- This function operates in an analogous manner to ■%fseek(),
- however it does so on unbuffered low-level i/o file descrip-
- tors, rather than on STDIO streams. It also returns the
- resulting pointer location. Thus ■%lseek(■"fd, ■"0L, ■!1) returns
- the current pointer location without moving it. -1 is re-
- turned on error.
-
- SEE ALSO
- open, close, read, write
-
- %MALLOC
-
- SYNOPSIS
- #include <stdlib.h>
-
- void * malloc(size_t cnt)
-
- DESCRIPTION
-
- ■&Malloc() attempts to allocate cnt bytes of memory from the
- ■$heap■V, the dynamic memory allocation area. If successful,
- it returns a pointer to the block, otherwise 0 is returned.
- The memory so allocated may be freed with ■$free(), or changed
- in size via ■'realloc(). ■&Malloc() calls ■$sbrk() to obtain
- memory, and is in turn called by ■&calloc(). ■&Malloc() does not
- clear the memory it obtains.
-
- SEE ALSO
- calloc, free, realloc
-
- %MEMSET
- %MEMCPY
- %MEMCMP
-
- SYNOPSIS
- #include <string.h>
-
- void memset(void s, char c, int n)
- void memcpy(void * d, void * s, int n)
- int memcmp(void * s1, void * s2, int n)
-
- DESCRIPTION
-
- ■&Memset() initializes n bytes of memory starting at the loca-
- tion pointed to by s with the character c. ■&Memcpy() copies n
- bytes of memory starting from the location pointed to by s
- to the block of memory pointed to by d. The result of copy-
- ing overlapping blocks is undefined. ■&Memcmp() compares two
- blocks of memory, of length n, and returns a signed value
- similar to ■'strncmp(). Unlike ■'strncmp() the comparision does
- not stop on a null character. The ascii collating sequence
- is used for the comparision, but the effect of including
- non-ascii characters in the memory blocks on the sense of
- the return value is indeterminate.
-
- SEE ALSO
- strncpy, strncmp
-
- %MKDIR
- %RMDIR
-
- SYNOPSIS
- #include <sys.h>
-
- int mkdir(char * s)
- int rmdir(char * s)
-
- DESCRIPTION
-
- These functions allow the creation (■%mkdir()) and deletion
- (■%rmdir()) of sub-directories under the MS-DOS operating sys-
- tem. The argument s may be an arbitrary pathname, and the
- return value will be -1 if the creation or removal was un-
- successful.
-
- SEE ALSO
- chdir
-
- %MSDOS
- %MSDOSCX
-
- SYNOPSIS
- #include <dos.h>
-
- long msdos(int ax, int dx, int cx,
- int bx, int si, int di)
- long msdoscx(int ax, int dx, int cx,
- int bx, int si, int di)
-
- DESCRIPTION
-
- These functions allow direct access to MS-DOS system calls.
- The arguments will be placed in the registers implied by
- their names, while the return value will be the contents of
- AX and DX (for ■%msdos()) or the contents of DX and CX (for
- ■'msdoscx()). Only as many arguments as necessary need be
- supplied, e.g. if only AH and DX need have specified valued,
- then only 2 argument would be required. The following piece
- of code outputs a form-feed to the printer.
-
- msdos(0x500, '\f');
-
- Note that the system call number (in this case 5) must be
- multiplied by 0x100 since MS-DOS expects the call number in
- AH, the high byte of AX.
-
- SEE ALSO
- intdos, intdosx, int86, int86x
-
- %OPEN
-
- SYNOPSIS
- #include <unixio.h>
-
- int open(char * name, int mode)
-
- DESCRIPTION
-
- ■$Open() is the fundamental means of opening files for reading
- and writing. The file specified by name is sought, and if
- found is opened for reading, writing or both. Mode is encod-
- ed as follows:
-
- Mode Meaning
- 0 Open for reading only
- 1 Open for writing only
- 2 Open for both reading and writing
-
-
-
- The file must already exist - if it does not, ■%creat() should be
- used to create it. On a successful open, a file descriptor
- is returned. This is a non-negative integer which may be
- used to refer to the open file subsequently. If the open
- fails, -1 is returned. The syntax of a CP/M filename is:
-
- [uid:][drive:]name.type
-
-
-
- where uid is a decimal number 0 to 15, drive is a letter A to P
- or a to p, name is 1 to 8 characters and type is 0 to 3
- characters. Though there are few inherent restrictions on
- the characters in the name and type, it is recommended that
- they be restricted to the alphanumerics and standard print-
- ing characters. Use of strange characters may cause prob-
- lems in accessing and/or deleting the file.
-
-
- One or both of uid: and drive: may be omitted; if both are sup-
- plied, the uid: must come first. Note that the [ and ] are
- meta-symbols only. Some examples are:
-
- fred.dat
- file.c
- 0:xyz.com
- 0:a:file1.p
- a:file2.
-
-
-
- If the uid: is omitted, the file will be sought with uid equal to
- the current user number, as returned by getuid(). If drive:
- is omitted, the file will be sought on the currently select-
- ed drive. The following special file names are recognized:
-
- lst: Accesses the list device - write only
- pun: Accesses the punch device - write only
- rdr: Accesses the reader device - read only
- con: Accesses the system console - read/write
-
-
-
- File names may be in any case - they are converted to upper case
- during processing of the name.
-
-
- MS-DOS filenames may be any valid MS-DOS 2.xx filename, e.g.
-
- fred.nrk
- A:\\HITECH\\STDIO.H
-
-
-
- The special device names (e.g. CON, LST) are also recognized.
- These do not require (and should not have) a trailing colon.
-
- SEE ALSO
- close, fopen, fclose, read, write, creat
-
- SYNOPSIS
- #include <stdio.h>
-
- void perror(char * s)
-
- DESCRIPTION
-
- This routine will print on the stderr stream the argument s,
- followed by a descriptive message detailing the last error
- returned from an open, close read or write call. Unfor-
- tunately CP/M does not provide definitive information relat-
- ing to the error, except in the case of a random read or
- write. Thus this routine is of limited usefulness under
- CP/M. MS-DOS provides much more information however, and use
- of ■&perror() after MS-DOS file handling calls will certainly
- give useful diagnostics.
-
- SEE ALSO
- open, close, read, write
-
- %PRINTF
- %VPRINTF
-
- SYNOPSIS
- #include <stdio.h>
-
- int printf(char * fmt, ...)
- int vprintf(char * fmt, va_list va_arg)
-
- DESCRIPTION
-
- ■&Printf() is a formatted output routine, operating on stdout.
- There are corresponding routines operating on a given stream
- (■'fprintf()) or into a string buffer (■'sprintf()). ■&Printf() is
- passed a format string, followed by a list of zero or more
- arguments. In the format string are conversion specifica-
- tions, each of which is used to print out one of the argu-
- ment list values. Each conversion specification is of the
- form %m.nc where the percent symbol % introduces a conver-
- sion, followed by an optional width specification m. n is
- an optional precision specification (introduced by the dot)
- and c is a letter specifying the type of the conversion. A
- minus sign ('-') preceding m indicates left rather than
- right adjustment of the converted value in the field. Where
- the field width is larger than required for the conversion,
- blank padding is performed at the left or right as speci-
- fied. Where right adjustment of a numeric conversion is
- specified, and the first digit of m is 0, then padding will
- be performed with zeroes rather than blanks.
-
-
- If the character * is used in place of a decimal constant, e.g.
- in the format %*d, then one integer argument will be taken
- from the list to provide that value. The types of conver-
- sion are:
- f
-
- Floating point - m is the total width and n is the number of
- digits after the decimal point. If n is omitted it defaults
- to 6.
- e
-
- Print the corresponding argument in scientific notation.
- Otherwise similar to f.
- g
-
- Use e or f format, whichever gives maximum precision in
- minimum width.
- o x X u d
-
- Integer conversion - in radices 8, 16, 10 and 10 respective-
- ly. The conversion is signed in the case of d, unsigned oth-
- erwise. The precision value is the total number of digits to
- print, and may be used to force leading zeroes. E.g. %8.4x
- will print at least 4 hex digits in an 8 wide field.
- Preceding the key letter with an l indicates that the value
- argument is a long integer or unsigned value. The letter X
- prints out hexadecimal numbers using the upper case letters
- ■!A-■!F rather than ■!a-■!f as would be printed when using x.
- s
-
- Print a string - the value argument is assumed to be a char-
- acter pointer. At most n characters from the string will be
- printed, in a field m characters wide.
- c
-
- The argument is assumed to be a single character and is
- printed literally.
-
-
- Any other characters used as conversion specifications will be
- printed. Thus %% will produce a single percent sign. Some
- examples:
-
- printf(■-Total = %4d%%■%, 23)
- yields 'Total = 23%'
- printf(■+Size is %lx■( , size)
- where size is a long, prints size
- as hexadecimal.
- printf(■+Name = %.8s■", ■+a1234567890■!)
- yields 'Name = a1234567'
- printf(■%xx%*d■', 3, 4)
- yields 'xx 4'
-
-
-
- Printf returns EOF on error, 0 otherwise. ■'Vprintf() is similar
- to ■&printf() but takes a variable argument list pointer rath-
- er than a list of arguments. See the description of
- ■"va_■%start() for more information on variable argument lists.
-
- SEE ALSO
- fprintf, sprintf
-
- %PUTC
-
- SYNOPSIS
- #include <stdio.h>
-
- int putc(int c, FILE * stream)
-
- DESCRIPTION
-
- ■$Putc() is the macro version of ■%fputc() and is defined in
- stdio.h. See ■%fputc() for a description of its behaviour.
-
- SEE ALSO
- fputc, getc, fopen, fclose
-
- %PUTCHAR
-
- SYNOPSIS
- #include <stdio.h>
-
- int putchar(int c)
-
- DESCRIPTION
-
- ■'Putchar() is a ■$putc() operation on stdout, defined in
- stdio.h.
-
- SEE ALSO
- putc, getc, freopen, fclose
-
- %PUTS
-
- SYNOPSIS
- #include <stdio.h>
-
- int puts(char * s)
-
- DESCRIPTION
-
- ■$Puts() writes the string s to the stdout stream, appending a
- newline. The null terminating the string is not copied. EOF
- is returned on error.
-
- SEE ALSO
- fputs, gets, freopen, fclose
-
- %PUTW
-
- SYNOPSIS
- #include <stdio.h>
-
- int putw(int w, FILE * stream)
-
- DESCRIPTION
-
- ■$Putw() copies the word w to the given stream. It returns w,
- except on error, in which case EOF is returned. Since this
- is a good integer, ■&ferror() should be used to check for er-
- rors.
-
- SEE ALSO
- getw, fopen, fclose
-
- %QSORT
-
- SYNOPSIS
- #include <stdlib.h>
-
- void qsort(void * base, size_t nel,
- size_t width, int (*func)())
-
- DESCRIPTION
-
- ■%Qsort() is an implementation of the quicksort algorithm. It
- sorts an array of nel items, each of length width bytes, lo-
- cated contiguously in memory at base. Func is a pointer to
- a function used by ■%qsort() to compare items. It calls func
- with pointers to two items to be compared. If the first
- item is considered to be greater than, equal to or less than
- the second then ■$func() should return a value greater than
- zero, equal to zero or less than zero respectively.
-
- static short array[100];
-
- #define SIZE sizeof array/sizeof array[0]
- a_func(p1, p2)
- short * p1, * p2;
- {
- return *p1 - *p2;
- }
-
- sort_em()
- {
- qsort(array, SIZE,
- sizeof array[0], a_func);
- }
-
-
-
- This will sort the array into ascending values. Note the use of
- sizeof to make the code independent of the size of a short,
- or the number of elements in the array.
- %RAND
-
- SYNOPSIS
- #include <stdlib.h>
-
- int rand(void)
-
- DESCRIPTION
-
- ■$Rand() is a pseudo-random number generator. It returns an
- integer in the range 0 to 32767, which changes in a pseudo-
- random fashion on each call.
-
- SEE ALSO
- srand
-
- %READ
-
- SYNOPSIS
- #include <unixio.h>
-
- int read(int fd, void * buf, size_t cnt)
-
- DESCRIPTION
-
- ■$Read() will read from the file associated with fd up to cnt
- bytes into a buffer located at buf. It returns the number of
- bytes actually read. A zero return indicates end-of-file. A
- negative return indicates error. Fd should have been ob-
- tained from a previous call to ■$open(). It is possible for
- ■$read() to return less bytes than requested, e.g. when read-
- ing from the console, in which case ■$read() will read one
- line of input.
-
- SEE ALSO
- open, close, write
-
- %REALLOC
-
- SYNOPSIS
- void * realloc(void * ptr, size_t cnt)
-
- DESCRIPTION
-
- ■'Realloc() frees the block of memory at ptr, which should
- have been obtained by a previous call to ■&malloc(), ■&calloc()
- or ■'realloc(), then attempts to allocate cnt bytes of dynamic
- memory, and if successful copies the contents of the block
- of memory located at ptr into the new block. At most, ■%real-
- ■#loc() will copy the number of bytes which were in the old
- block, but if the new block is smaller, will only copy cnt
- bytes. If the block could not be allocated, 0 is returned.
-
-
-
- SEE ALSO
- malloc, calloc, realloc
-
- %REMOVE
-
- SYNOPSIS
- #include <stdio.h>
-
- int remove(char * s)
-
- DESCRIPTION
-
- ■&Remove() will attempt to remove the file named by the argu-
- ment s from the directory. A return value of -1 indicates
- that the attempt failed.
-
- SEE ALSO
- unlink
-
- %RENAME
-
- SYNOPSIS
- #include <stdio.h>
-
- int rename(char * name1, char * name2)
-
- DESCRIPTION
-
- The file named by name1 will be renamed to name2. -1 will be
- returned if the rename was not successful. Note that renames
- across user numbers or drives are not permitted.
-
- SEE ALSO
- open, close, unlink
-
- %REWIND
-
- SYNOPSIS
- #include <stdio.h>
-
- int rewind(FILE * stream)
-
- DESCRIPTION
-
- This function will attempt to re-position the read/write
- pointer of the nominated stream to the beginning of the
- file. A return value of -1 indicates that the attempt was
- not successful, perhaps because the stream is associated
- with a non-random access file such as a character device.
-
- SEE ALSO
- fseek, ftell
-
- %SBRK
-
- SYNOPSIS
- char * sbrk(int incr)
-
- DESCRIPTION
-
- ■$Sbrk() increments the current highest memory location allo-
- cated to the program by incr bytes. It returns a pointer to
- the previous highest location. Thus ■$sbrk(■!0) returns a
- pointer to the current highest location, without altering
- its value. If there is insufficient memory to satisfy the
- request, -1 is returned.
-
- SEE ALSO
- brk, malloc, calloc, realloc, free
-
- %SCANF
-
- SYNOPSIS
- #include <stdio.h>
-
- int scanf(char * fmt, ...)
- int vscanf(char *, va_list ap);
-
- DESCRIPTION
-
- ■%Scanf() performs formatted input (■*de-editing■,) from the
- stdin stream. Similar functions are available for streams in
- general, and for strings. The function ■&vscanf() is similar,
- but takes a pointer to an argument list rather than a series
- of additional arguments. This pointer should have been ini-
- tialized with ■"va_■%start(). The input conversions are per-
- formed according to the fmt string; in general a character
- in the format string must match a character in the input;
- however a space character in the format string will match
- zero or more ■,white space■> characters in the input, i.e.
- spaces, tabs or newlines. A conversion specification takes
- the form of the character %, optionally followed by an as-
- signment suppression character ('*'), optionally followed by
- a numerical maximum field width, followed by a conversion
- specification character. Each conversion specification, un-
- less it incorporates the assignment suppression character,
- will assign a value to the variable pointed at by the next
- argument. Thus if there are two conversion specifications in
- the fmt string, there should be two additional pointer argu-
- ments. The conversion characters are as follows:
- o x d
-
- Skip white space, then convert a number in base 8, 16 or 10
- radix respectively. If a field width was supplied, take at
- most that many characters from the input. A leading minus
- sign will be recognized.
- f
-
- Skip white space, then convert a floating number in either
- conventional or scientific notation. The field width ap-
- plies as above.
- s
-
- Skip white space, then copy a maximal length sequence of
- non-white-space characters. The pointer argument must be a
- pointer to char. The field width will limit the number of
- characters copied. The resultant string will be null-
- terminated.
- c
-
- Copy the next character from the input. The pointer argument
- is assumed to be a pointer to char. If a field width is
- specified, then copy that many characters. This differs from
- the s format in that white space does not terminate the
- character sequence.
-
-
- The conversion characters o, x, u, d and f may be preceded by an
- l to indicate that the corresponding pointer argument is a
- pointer to long or double as appropriate. A preceding h will
- indicate that the pointer argument is a pointer to short
- rather than int.
-
-
- ■%Scanf() returns the number of successful conversions; EOF is re-
- turned if end-of-file was seen before any conversions were
- performed. Some examples are:
-
- scanf(■%%d %s■), &a, &s)
- with input ■) 12s
- will assign 12 to a, and ■!s■& to s.
-
- scanf(■(%4cd %lf■), &c, &f)
- with input ■* abcd -3.5
- will assign ■$ abc■5 to c, and -3.5 to f.
-
-
- SEE ALSO
- fscanf, sscanf, printf, va_arg
-
- %SEGREAD
-
- SYNOPSIS
- #include <dos.h>
- int segread(struct SREGS * segregs)
-
- DESCRIPTION
-
- ■'Segread() copies the values of the segment registers into
- the structure pointed to by segregs.
-
- SEE ALSO
- int86, int86x, intdos, intdosx
-
- %SETJMP
-
- SYNOPSIS
- #include <setjmp.h>
- int setjmp(jmp_buf buf)
-
- DESCRIPTION
-
- ■&Setjmp() is used with ■'longjmp() for non-local gotos. See
- ■'longjmp() for further information.
-
- SEE ALSO
- longjmp
-
- %SETUID
-
- SYNOPSIS
- #include <sys.h>
-
- void setuid(int uid)
-
- DESCRIPTION
-
- ■&Setuid() will set the current user number to uid. Uid should
- be a number in the range 0-15.
-
- SEE ALSO
- getuid
-
- %SETVBUF
- %SETBUF
-
- SYNOPSIS
- #include <stdio.h>
-
- int setvbuf(FILE * stream, char * buf,
- int mode, size_t size);
- void setbuf(FILE * stream, char * buf)
-
- DESCRIPTION
-
- The ■'setvbuf() function allows the buffering behaviour of a
- STDIO stream to be altered. It supersedes the function ■$set-
- ■#buf() which is retained for backwards compatibility. The
- arguments to ■'setvbuf() are as follows: stream designates the
- STDIO stream to be affected; buf is a pointer to a buffer
- which will be used for all subsequent I/O operations on this
- stream. If buf is null, then the routine will allocate a
- buffer from the heap if necessary, of size BUFSIZ as defined
- in <stdio.h>. mode may take the values _IONBF, to turn
- buffering off completely, _IOFBF, for full buffering, or
- _IOLBF for line buffering. Full buffering means that the as-
- sociated buffer will only be flushed when full, while line
- buffering means that the buffer will be flushed at the end
- of each line or when input is requested from another STDIO
- stream. size is the size of the buffer supplied. For exam-
- ple:
-
- setvbuf(stdout, my_buf, _IOLBF, sizeof my_buf);
-
- If a buffer is supplied by the caller, that buffer will
- remain associated with that stream even over■&fclose(),
- ■%fopen() calls until another ■'setvbuf() changes it.
-
- SEE ALSO
- fopen, freopen, fclose
-
- %SET_VECTOR
-
- SYNOPSIS
- #include <intrpt.h>
- typedef interrupt void (*isr)();
- isr set_vector(isr * vector, isr func);
-
- DESCRIPTION
-
- This routine allows an interrupt vector to be initialized.
- The first argument should be the address of the interrupt
- vector (not the vector number but the actual address) cast
- to a pointer to ■#isr, which is a typedef'd pointer to an in-
- terrupt function. The second argument should be the function
- which you want the interrupt vector to point to. This must
- be declared using the ■)interrupt type qualifier. The return
- value of ■#set_■&vector() is the previous contents of the vec-
- tor.
-
- SEE ALSO
- di(), ei()
-
- %SIGNAL
-
- SYNOPSIS
- #include <signal.h>
- void (* signal)(int sig, void (*func)());
-
- DESCRIPTION
-
- ■&Signal() provides a mechanism for catching control-C's
- (ctrl-BREAK for MS-DOS) typed on the console during I/O.
- Under CP/M the console is polled whenever an I/O call is
- performed, while for MS-DOS the polling depends on the set-
- ting of the BREAK command. If a control-C is detected cer-
- tain action will be performed. The default action is to exit
- summarily; this may be modified with ■&signal(). The sig argu-
- ment to signal may at the present time be only SIGINT, sig-
- nifying an interrupt condition. The func argument may be one
- of SIG_DFL, representing the default action, SIG_IGN, to ig-
- nore control-C's completely, or the address of a function
- which will be called with one argument, the number of the
- signal caught, when a control-C is seen. As the only signal
- supported is SIGINT, this will always be the value of the
- argument to the called function.
-
- SEE ALSO
- exit
-
- %SIN
-
- SYNOPSIS
- #include <math.h>
-
- double sin(double f);
-
- DESCRIPTION
-
- This function returns the sine function of its argument.
-
- SEE ALSO
- cos, tan, asin, acos, atan
-
- %SPAWNL
- %SPAWNV
- %SPAWNVE
-
- SYNOPSIS
- int spawnl(char * n, char * argv0, ...);
- int spawnv(cahr * n, char ** v)
- int spawnve(char * n, char ** v, char ** e)
-
- DESCRIPTION
-
- These functions will load and execute a sub-program, named
- by the argument n. The calling conventions are similar to
- the functions ■%execl() and ■%execv(), the difference being that
- the spawn functions return to the calling program after ter-
- mination of the sub-program, while the exec functions return
- only if the program could not be executed. ■'Spawnve() takes
- an environment list in the same format as the argument list
- which will be supplied to the executed program as its en-
- vironment.
-
- SEE ALSO
- execl, execv
-
- %SPRINTF
-
- SYNOPSIS
- #include <stdio.h>
-
- int sprintf(char * buf, char * fmt, ...);
- int vsprintf(char * buf, char * fmt, va_list ap);
-
- DESCRIPTION
-
- ■'Sprintf() operates in a similar fashion to ■&printf(), except
- that instead of placing the converted output on the stdout
- stream, the characters are placed in the buffer at buf. The
- resultant string will be null-terminated, and the number of
- characters in the buffer will be returned. ■(Vsprintf takes
- an argument pointer rather than a list of arguments.
-
- SEE ALSO
- printf, fprintf, sscanf
-
- %SQRT
-
- SYNOPSIS
- #include <math.h>
-
- double sqrt(double f)
-
- DESCRIPTION
-
- ■$Sqrt() implements a square root function using Newton's ap-
- proximation.
-
- SEE ALSO
- exp
-
- %SSCANF
-
- SYNOPSIS
- #include <stdio.h>
-
- int sscanf(char * buf, char * fmt, ...);
- int vsscanf(char * buf, char * fmt, va_list ap);
-
- DESCRIPTION
-
- ■&Sscanf() operates in a similar manner to ■%scanf(), except
- that instead of the conversions being taken from stdin, they
- are taken from the string at buf.
-
- SEE ALSO
- scanf, fscanf, sprintf
-
- %SRAND
-
- SYNOPSIS
- #include <stdlib.h>
-
- void srand(int seed)
-
- DESCRIPTION
-
- ■%Srand() initializes the random number generator accessed by
- ■$rand() with the given seed. This provides a mechanism for
- varying the starting point of the pseudo-random sequence
- yielded by ■$rand(). On the z80, a good place to get a truly
- random seed is from the refresh register. Otherwise timing a
- response from the console will do.
-
- SEE ALSO
- rand
-
- %STAT
-
- SYNOPSIS
- #include <stat.h>
-
- int stat(char * name, struct stat * statbuf)
-
- DESCRIPTION
-
- This routine returns information about the file by name. The
- information returned is operating system dependent, but may
- include file attributes (e.g. read only), file size in
- bytes, and file modification and/or access times. The argu-
- ment name should be the name of the file, and may include
- path names under DOS, user numbers under CP/M, etc. The ar-
- gument statbuf should be the address of a structure as de-
- fined in ■$stat.■!h which will be filled in with the information
- about the file. The structure of ■&struct ■$stat is as follows:
-
- struct stat
- {
- short st_mode; /* flags */
- long st_atime; /* access time */
- long st_mtime; /* modification time */
- long st_size; /* file size */
- };
-
- The access and modification times (under DOS these are both
- set to the modification time) are in seconds since 00:00:00
- Jan 1 1970. The function ■%ctime() may be used to convert this
- to a readable value. The file size is self explanatory. The
- flag bits are as follows:
- Flag Meaning
- ____________________________________
- S_IFMT mask for file type
- S_IFDIR file is a directory
- S_IFREG file is a regular file
- S_IREAD file is readable
- S_IWRITE file is writeable
- S_IEXEC file is executable
- S_HIDDEN file is hidden
- S_SYSTEM file is marked system
- S_ARCHIVE file has been written to
- ■$Stat returns 0 on success, -1 on failure, e.g. if the file
- could not be found.
-
- SEE ALSO
- ctime, creat, chmod
-
- %STRCAT
- %STRCMP
- %STRCPY
- %STRLEN
- %STRNCAT
- %STRNCMP
- %STRNCPY
-
- SYNOPSIS
- #include <string.h>
-
- char * strcat(char * s1, char * s2);
- int strcmp(char * s1, char * s2);
- char * strcpy(char * s1, char * s2);
- int strlen(char * s);
- char * strncat(char * s1, char * s2, size_t n);
- int strncmp(char * s1, char * s2, size_t n);
- char * strncpy(char * s1, char * s2, size_t n);
-
- DESCRIPTION
-
- These functions provide operations on null-terminated
- strings. ■&Strcat() appends the string s2 to the end of the
- string s1. The string at s1 will be null terminated. Need-
- less to say the buffer at s1 must be big enough. ■&Strcmp()
- compares the two strings and returns a number greater than
- 0, 0 or a number less than 0 according to whether s1 is
- greater than, equal to or less than s2. The comparision is
- via the ascii collating order, with the first character the
- most significant. ■&Strcpy() copies s2 into the buffer at s1,
- null terminating it. ■&Strlen() returns the length of s1, not
- including the terminating null. ■'Strncat(), ■'strncmp() and
- ■'strncpy() will catenate, compare and copy s2 and s1 in the
- same manner as their similarly named counterparts above, but
- involving at most n characters. For ■'strncpy(), the resulting
- string may not be null terminated.
- %STRCHR
- %STRRCHR
-
- SYNOPSIS
- #include <string.h>
-
- char * strchr(char * s, int c)
- char * strrchr(char * s, int c)
-
- DESCRIPTION
-
- These functions locate an instance of the character c in the
- string s. In the case of ■&strchr() a pointer will be returned
- to the first instance of the character found be searching
- from the beginning of the string, while ■'strrchr() searches
- backwards from the end of the string. A null pointer is re-
- turned if the character does not exist in the string.
-
- SEE ALSO
-
- %SYSTEM
-
- SYNOPSIS
- #include <sys.h>
-
- int system(char * s)
-
- DESCRIPTION
-
- When executed under MS-DOS ■&system() will pass the argument
- string to the command processor, located via the environment
- string COMSPEC, for execution. The exit status of the com-
- mand processor will be returned from the call to system().
- For example, to set the baud rate on the serial port on an
- MS-DOS machine:
-
- system(■4MODE COM1:96,N,8,1,P■");
-
- This function will not work on CP/M-86 since it does not
- have an invokable command interpreter. Under Concurrent CP/M
- the CLI system call is used.
-
- SEE ALSO
- spawnl, spawnv
-
- %TAN
-
- SYNOPSIS
- #include <math.h>
-
- double tan(double f);
-
- DESCRIPTION
-
- This is the tangent function.
-
- SEE ALSO
- sin, cos, asin, acos, atan
-
- %TIME
-
- SYNOPSIS
- #include <time.h>
-
- time_t time(time_t * t)
-
- DESCRIPTION
-
- This function returns the current time in seconds since
- 00:00:00 on Jan 1, 1970. If the argument t is non-null, the
- same value is stored into the object pointed to by t. The
- accuracy of this function is naturally dependent on the
- operating system having the correct time. This function does
- not work under CP/M-86 or CP/M 2.2 but does work under
- Concurrent-CP/M and CP/M+.
-
- SEE ALSO
- ctime, gmtime, localtime, asctime
-
- %TOUPPER
- %TOLOWER
- %TOASCII
-
- SYNOPSIS
- #include <ctype.h>
- char toupper(int c);
- char tolower(int c);
- char toascii(int c);
- char c;
-
- DESCRIPTION
-
- ■'Toupper() converts its lower case alphabetic argument to
- upper case, ■'tolower() performs the reverse conversion, and
- ■'toascii() returns a result that is guaranteed in the range
- 0-0177. ■'Toupper() and ■'tolower return their arguments if it
- is not an alphabetic character.
-
- SEE ALSO
- islower, isupper, isascii et. al.
-
- %UNGETC
-
- SYNOPSIS
- #include <stdio.h>
-
- int ungetc(int c, FILE * stream)
-
- DESCRIPTION
-
- ■&Ungetc() will attempt to push back the character c onto the
- named stream, such that a subsequent ■$getc() operation will
- return the character. At most one level of pushback will be
- allowed, and if the stream is not buffered, even this may
- not be possible. EOF is returned if the ■&ungetc() could not
- be performed.
-
-
-
-
-
- SEE ALSO
- getc
-
- %UNLINK
-
- SYNOPSIS
- int unlink(char * name)
-
- DESCRIPTION
-
- ■&Unlink() will remove (delete) the named file, that is erase
- the file from its directory. See ■$open() for a description of
- the file name construction. Zero will be returned if suc-
- cessful, -1 if the file did not exist or it could not be re-
- moved.
-
- SEE ALSO
- open, close, rename, remove
-
- %VA_START
- %VA_ARG
- %VA_END
-
- SYNOPSIS
- #include <stdarg.h>
-
- void va_start(va_list ap, ■%parmN);
- ■$type va_arg(ap, ■$type);
- void va_end(va_list ap);
-
- DESCRIPTION
-
- These macros are provided to give access in a portable way
- to parameters to a function represented in a prototype by
- the ellipsis symbol (...), where type and number of argu-
- ments supplied to the function are not known at compile
- time. The rightmost parameter to the function (shown as
- ■%parmN) plays an important role in these macros, as it is the
- starting point for access to further parameters. In a func-
- tion taking variable numbers of arguments, a variable of
- type va_list should be declared, then the macro va_start in-
- voked with that variable and the name of ■%parmN. This will
- initialize the variable to allow subsequent calls of the
- macro va_arg to access successive parameters. Each call to
- va_arg requires two arguments; the variable previously de-
- fined and a type name which is the type that the next param-
- eter is expected to be. Note that any arguments thus ac-
- cessed will have been widened by the default conventions to
- ■#int, ■(unsigned ■#int or ■&double. For example if a character ar-
- gument has been passed, it should be accessed by va_arg(ap,
- int) since the char will have been widened to ■#int. An exam-
- ple is given below of a function taking one integer parame-
- ter, followed by a number of other parameters. In this exam-
- ple the function expects the subsequent parameters to be
- pointers to char, but note that the compiler is not aware of
- this, and it is the programmers responsibility to ensure
- that correct arguments are supplied.
-
- #include <stdarg.h>
- prf(int n, ...)
- {
- va_list ap;
-
- va_start(ap, n);
- while(n--)
- puts(va_arg(ap, char *));
- va_end(ap);
- }
-
- %WRITE
-
- SYNOPSIS
- #include <unixio.h>
-
- int write(int fd, void * buf, size_t cnt)
-
- DESCRIPTION
-
- ■%Write() will write from the buffer at buf up to cnt bytes to
- the file associated with the file descriptor fd. The number
- of bytes actually written will be returned. EOF or a value
- less than cnt will be returned on error. In any case, any
- return value not equal to cnt should be treated as an error
- (cf. ■$read() ).
-
- SEE ALSO
- open, close, read
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-